-- 1.判段秒杀库存是否充足
--1.1优惠卷id
local voucherId = ARGV[1]
--1.2用户id
local userId = ARGV[2]
--1.3订单key
local orderId = ARGV[3]

--2.数据据key
--2.1库存key
local stockKey = "seckill:stock:" .. voucherId
--2.2订单key
local seckillKey = "seckill:order:" .. voucherId

--3.判段秒杀库存是否充足
if (tonumber(redis.call("get", stockKey)) <= 0) then
    --库存不足
    return 1
end
--4.判断用户是否重复下单
--我们认为用户下单，我们把用户id保存在redis中，使用set集合，集合中保存的是用户id
if (redis.call("sismember", seckillKey, userId) == 1) then
    --用户重复下单
    return 2
end
--5.扣减库存
redis.call("incrby", stockKey, -1)
--6.下单
redis.call("sadd", seckillKey, userId)
--7.我们拥有资格的下单后给stream消息队列发送消息 XADD stream.orders * k1 v1 k2 v2
redis.call("xadd", "stream.orders", "*", "userId", userId, "voucherId", voucherId,"id", orderId)
return 0